/* 
  第14节：map数据结构

  这节课主要学习map的这种ES6新加的数据结构。在一些构建工具中是非常喜欢使用map这种数据结构来进行配置的，因为map是一种灵活，简单的适合一对一查找的数据结构。我们知道的数据结构，已经有了json和set。那map有什么特点。

  -----------------------------------------------------------------------------------------------------------------

  Json和map格式的对比
    map的效率和灵活性更好

  先来写一个JSON，这里我们用对象进行模拟操作。
    let json = {
        name:'jspang',
        skill:'web'
    }
    console.log(json.name);


  但是这种反应的速度要低于数组和map结构。而且Map的灵活性要更好，你可以把它看成一种特殊的键值对，但你的key可以设置成数组，值也可以设置成字符串，让它不规律对应起来。  
    let json = {
      name:'jspang',
      skill:'web'
    }
    console.log(json.name);
    
    var map=new Map();
    map.set(json,'iam');
    console.log(map);

  当然也可key字符串，value是对象。我们调换一下位置，依然是符合map的数据结构规范的
    map.set('jspang',json);
    console.log(map);

  -----------------------------------------------------------------------------------------------------------------    

  map的增删查
    
  增值:set
    上边我们已经会为map增加值了，就是用我们的set方法，这里我就不重复讲解了。直接看如何取出我们的值。
  
  取值get  
    现在取json对应的值。
    console.log(map.get(json));

  删除delete  
    删除delete的特定值：
    map.delete(json);
    onsole.log(map)

  size属性  
    console.log(map.size);

  查找是否存在has
    console.log(map.has('jspang'))  
  
  清楚所有元素clear  
    map.clear()
  
  总结：map在现在开发中已经经常使用，它的灵活性和高效性是我们喜欢的。开发中试着去使用map吧，你一定会喜欢上它的。  
    
*/

// Json和map格式的对比
let json={
  name:'Dfei',
  age:25
}
console.log(json.name);

let map=new Map();
console.log(map);  //Map(0) {}
console.log(typeof map);  //object
map.set(json,'iam');
console.log(map);  //Map(1) {{…} => "iam"}

map.set('jspang',json);
console.log(map);  //Map(2) {{…} => "iam", "jspang" => {…}}


// map的增删查

// 取值get
  console.log(map.get(json));   //iam

//  删除delete 
  console.log(map.delete(json)); //true

//  size属性 
  console.log(map.size)  //1

//查找是否存在has 
  console.log(map.has(json));  //false

// 清楚所有元素clear
  map.clear();
  console.log(map);  //Map(0) {}